1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include <iostream> #include <opencv2/opencv.hpp> #include"Salt.h"
using namespace cv; using namespace std;
void myfilter(int filter_size,Mat& img_input,Mat& img_output);
int main(){ Mat img,img_gray,img_output,img_output2; img = imread("/home/v/home.png");
if (img.empty()){ cout<<"can not load image"<<endl; return -1; }
cvtColor(img,img_gray,COLOR_BGR2GRAY); Salt(img_gray,5000); imshow("img_gray",img_gray);
int filter_size = 7; myfilter(filter_size,img_gray,img_output);
blur(img_gray,img_output2,Size(filter_size,filter_size));
imshow("img out 1",img_output); imshow("img out 2",img_output2);
waitKey(0); return 0; }
void myfilter(int filter_size,Mat& img_input,Mat& img_output){ img_output = img_input.clone();
int k = (filter_size - 1)/2; for (int i = k;i<(img_input.rows - k);i++){ for (int j = k;j<(img_input.cols - k);j++){ int sum = 0; for (int m = -k;m<k+1;m++){ for (int n=-k;n<k+1;n++) { sum += img_input.at<uchar>(i+m,j+n); } } img_output.at<uchar>(i,j) = sum/(filter_size*filter_size); } } }
|